home *** CD-ROM | disk | FTP | other *** search
- #ifndef __ABSTRACTDOCUMENT__
- #define __ABSTRACTDOCUMENT__
-
- #include <Types.h>
-
- //
- // For class definition of TAbstractScriptableObject
- //
- #include "AbstractScriptableObject.h"
-
- //
- // For definition of TAbstractIterator, base class of TDocumentLoop
- //
- #include "AbstractIterator.h"
-
- #include "Int64.h"
-
- class TFSSpecification;
-
- //================================================================================
- // Class TAbstractDocument
- //================================================================================
- class TAbstractDocument : public TAbstractScriptableObject
- {
- private:
- //
- // We keep track of every document that has been created
- //
- TAbstractDocument* fNextDocument;
- TAbstractDocument* fPreviousDocument;
-
- Boolean fCloseRequested;
-
- public:
- DeclareSmallClassData(TAbstractDocument, TAbstractScriptableObject);
-
- TAbstractDocument();
- virtual ~TAbstractDocument();
- void IAbstractDocument();
-
- virtual TAbstractScriptableObject* Clone();
- void PushOnDocumentList();
- void RemoveFromDocumentList();
-
- #if 0
- virtual TAbstractDocument& operator=(const TAbstractDocument& rhs);
- #endif
-
- virtual Int64 DocumentIdentifier() const = 0;
- virtual Boolean DocumentFSSpecification(TFSSpecification& fileSpec) const;
-
- virtual DescType ObjectClass(const TAETransaction& t, Boolean recordedClass = false);
- virtual Boolean DerivedFromOSLClass(const TAETransaction& t, DescType objectClass);
-
- TAbstractDocument* NextDocument() { return fNextDocument; };
- TAbstractDocument* PreviousDocument() { return fPreviousDocument; };
-
- void MarkForClose() { fCloseRequested = true; }
- Boolean CloseRequested() { return fCloseRequested; }
- };
-
- //
- // Returns the first open document
- //
- TAbstractDocument* FirstOpenDocument();
- TAbstractDocument* LastOpenDocument();
-
- //================================================================================
- // Class TDocumentLoop
- //================================================================================
- class TDocumentLoop : public TAbstractObjectIterator
- {
- private:
- TAbstractDocument* fDocument;
- Boolean fRemovedCurrent;
- Boolean fDirection;
-
- public:
- virtual ~TDocumentLoop();
- TDocumentLoop() : fRemovedCurrent(false) { fDocument = FirstOpenDocument(); };
- virtual void Reset(const TAETransaction&, Boolean iterationDirection = kForwardIteration) { fDirection = iterationDirection; fDocument = (iterationDirection == kForwardIteration) ? FirstOpenDocument() : LastOpenDocument(); }
- virtual Boolean More(const TAETransaction&) const { return fDocument != nil; };
- virtual void Next(const TAETransaction&) { if(fDocument && (fRemovedCurrent == false)) fDocument = (fDirection == kForwardIteration) ? fDocument->NextDocument() : fDocument->PreviousDocument(); fRemovedCurrent = false; };
-
- virtual TAbstractScriptableObject* Current(const TAETransaction&) { return this->CurrentDocument(); };
- virtual void RemoveCurrent(const TAETransaction& t) { this->RemoveCurrentDocument(t); };
-
- TAbstractDocument* CurrentDocument() { return fDocument; };
- TAbstractDocument* RemoveCurrentDocument(const TAETransaction& t);
- };
-
- #endif
-